package 抽象类;
/*
抽象类和抽象方法必须使用abstract关键字修饰
    public abstract class 类名{}
    public abstract void 方法名();

抽象类中不一定有抽象方法
有抽象方法的类一定是抽象类

抽象类不能实例化
    需要通过参照多态的方式，通过子类对象实例化，这叫做抽象类多态

抽象类的子类
    要么重写抽象类中的所有抽象方法
    要么是抽象类

抽象类中
    成员变量：可以是变量，可以是常量
    构造方法：有构造方法，但不能被实例化；用于子类访问父类数据的初始化
    成员方法：可以有抽象方法：限定子类必须完成某些动作；
             也可以有非抽象方法，提高代码复用性
 */
public class AnimalTestDemo {
    public static void main(String[] args) {
        //Animal a=new Animal();
        //a.eat();

        Animal a=new Cat();
        a.eat();
        a.sleep();
        a.show();
    }
}
